#include <bits/stdc++.h>
using namespace std;

// 【题目】力扣001. 两数之和
// 【难度】简单
// 【提交】https://leetcode.cn/problems/two-sum/submissions/663337206/
// 【标签】数组；哈希表
class Solution {
public:
    std::vector<int> twoSum(std::vector<int>& nums, int target) {
        // 创建一个哈希表，用于存储元素及其索引
        std::unordered_map<int, int> hash_map;
        
        // 遍历数组
        for (int i = 0; i < nums.size(); ++i) {
            // 计算目标值与当前元素的差值
            int complement = target - nums[i];
            
            // 检查差值是否已经在哈希表中
            if (hash_map.find(complement) != hash_map.end()) {
                // 如果存在，返回差值的索引和当前元素的索引
                return {hash_map[complement], i};
            }
            
            // 如果不存在，将当前元素及其索引存入哈希表
            hash_map[nums[i]] = i;
        }
        
        // 如果没有找到答案，返回空数组
        return {};
    }
};